<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>dp12: xdp_rx_sst_dp159_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">dp12
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xdp__rx__sst__dp159__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xdp_rx_sst_dp159_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>Contains a design example using the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> driver for an DP RX core generated with SST-only functionality. </p>
<p>This example runs the programming sequence for the DP159 retimer. An I2C controller will need to exist in the design have a connection to the DP159. A user-defined hook is used for delay. The reasoning behind this is that MicroBlaze sleep is not very accurate without a hardware timer. For systems that have a hardware timer, the user may override the default MicroBlaze sleep with a function that will use the hardware timer. Also, this example sets up the interrupt controller and defines handlers for various interrupt types. In this way, the RX interrupt handler will arbitrate the different interrupts to their respective interrupt handlers defined in this example. This example will print out the detected resolution of the incoming DisplayPort video stream. This example is meant to take in the incoming DisplayPort video stream and pass it through using the Dprd_Vidpipe* functions which are left for the user to implement.</p>
<dl class="section note"><dt>Note</dt><dd>This example requires an AXI timer in the system. </dd>
<dd>
For this example to work, the user will need to implement initialization of the system (Dprx_PlatformInit) as this is system-specific. </dd>
<dd>
For this example to display output, the user will need to implement the Dprx_Vidpipe* functions which configure and reset the video pipeline as required as this is system-specific. </dd>
<dd>
In the presence of a DP159 retimer, an I2C controller needs to exist in the design to program it. Depending on how the DP159 connection exists, the user will need to implement Dprx_Dp159Reset function.</dd></dl>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date     Changes
</p>
<hr/>
<p>
1.0   als  01/20/15 Initial creation.
2.0   als  07/07/15 Added DP159 programming.
4.0   als  02/07/16 Added end of line reset for reduced blanking.
5.1   ms   01/23/17 Added xil_printf statement in main function to
                    ensure that "Successfully ran" and "Failed" strings
                    are available in all examples. This is a fix for
                    CR-965028.
</pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a953524492bf93ab5c066e12dbbef6277"><td class="memItemLeft" align="right" valign="top">u32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdp__rx__sst__dp159__example_8c.html#a953524492bf93ab5c066e12dbbef6277">Dprx_SstExample</a> (<a class="el" href="struct_x_dp.html">XDp</a> *InstancePtr, u16 DeviceId, INTC *IntcPtr, u16 IntrId, u16 DpIntrId, XTmrCtr *TimerCounterPtr, u16 TimerId)</td></tr>
<tr class="memdesc:a953524492bf93ab5c066e12dbbef6277"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main entry point for the interrupt with timer example using the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> driver.  <a href="#a953524492bf93ab5c066e12dbbef6277">More...</a><br/></td></tr>
<tr class="separator:a953524492bf93ab5c066e12dbbef6277"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdp__rx__sst__dp159__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the main function of the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> (operating in RX mode) interrupt with timer example.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br/></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a953524492bf93ab5c066e12dbbef6277"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">u32 Dprx_SstExample </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_dp.html">XDp</a> *&#160;</td>
          <td class="paramname"><em>InstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>DeviceId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">INTC *&#160;</td>
          <td class="paramname"><em>IntcPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>IntrId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>DpIntrId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">XTmrCtr *&#160;</td>
          <td class="paramname"><em>TimerCounterPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>TimerId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The main entry point for the interrupt with timer example using the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> driver. </p>
<p>This function will set up the system, interrupt controller and interrupt handlers, and the custom sleep handler.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">InstancePtr</td><td>is a pointer to the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> instance. </td></tr>
    <tr><td class="paramname">DeviceId</td><td>is the unique device ID of the DisplayPort RX core instance. </td></tr>
    <tr><td class="paramname">IntcPtr</td><td>is a pointer to the interrupt instance. </td></tr>
    <tr><td class="paramname">IntrId</td><td>is the unique device ID of the interrupt controller. </td></tr>
    <tr><td class="paramname">DpIntrId</td><td>is the interrupt ID of the DisplayPort RX connection to the interrupt controller. </td></tr>
    <tr><td class="paramname">TimerCounterPtr</td><td>is a pointer to the timer instance. </td></tr>
    <tr><td class="paramname">TimerId</td><td>is the ID of the timer controller to use for delays.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_SUCCESS if the system was set up correctly and link training was successful.</li>
<li>XST_FAILURE otherwise.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>Referenced by <a class="el" href="xdp__rx__sst__dp159__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is the main function of the <a class="el" href="struct_x_dp.html" title="The XDp instance data. ">XDp</a> (operating in RX mode) interrupt with timer example. </p>
<p>If the Dprx_SstExample function, which sets up the system succeeds, this function will wait for interrupts.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">None.</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>XST_FAILURE if the interrupt example was unsuccessful - system setup failed.</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Unless setup failed, main will never return since Dprx_SstExample is blocking. </dd></dl>

<p>References <a class="el" href="xdp__rx__sst__dp159__example_8c.html#a953524492bf93ab5c066e12dbbef6277">Dprx_SstExample()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
